# match 语句接受一个表达式并把它的值与一个或多个 case 块给出的一系列模式进行比较。
# 只有第一个匹配的模式会被执行，并且它还可以提取值的组成部分（序列的元素或对象的属性）赋给变量。


def http_error(status):
    match status:
        case 400:
            return "Bad Request"
        case 404:
            return "Not Found"
        case 405:
            return "Method Not Allowed"
        case 500:
            return "Internal Server Error"
        case _:
            return "Something's wrong with the internet"
    return None


data = {'name': 'jason', 'age': 18}

match data:
    case {'name': name, 'age': age} if age > 18:
        print(f'{name} is an adult ({age}) years old')
    case _:
        print('invalid data')



if __name__ == '__main__':
    print(http_error(400))
